#ifndef __VSDL_EVENT_H__
#define __VSDL_EVENT_H__

#include <SDL/SDL.h>

class VSDL_EventHandler;

#define __HANDLE_EVENT	

namespace VSDL_EventSystem{
	int GetEvent(SDL_Event *event); 
	void ProcessEvent(SDL_Event &event, VSDL_EventHandler &handler, void *arg);
}

class VSDL_EventHandler{
protected:
	bool enabled;
public:
	VSDL_EventHandler(); //Handler is enabled by default
	VSDL_EventHandler(bool enabled);
	void Enable();
	void Disable();
	bool IsEnabled();
	//Not pure virtual because inherited class may implement part of these event handling functions below 
	virtual void __HANDLE_EVENT OnKeyDown(SDLKey keysym, unsigned char *keyStates, void *arg)
	{

	}

	virtual void __HANDLE_EVENT OnKeyUp(SDLKey keysym, void *arg)
	{
	}

	virtual void __HANDLE_EVENT OnMouseMove(int button, unsigned char buttonState, int absX, int absY, int relX, int relY, void *arg)
	{
	}

	virtual void __HANDLE_EVENT OnMouseDown(int button, unsigned char buttonState, int absX, int absY, void *arg)
	{
	}

	virtual void __HANDLE_EVENT OnMouseUp(int button, unsigned char buttonState, int absX, int absY, void *arg)
	{
	}

	virtual void __HANDLE_EVENT OnQuit(void *arg)
	{
	}
};



#endif /*__VSDL_EVENT_H__*/
